
//
//  Status.swift
//  RuiLinWeibo
//
//  Created by Caesar on 15/10/14.
//  Copyright © 2015年 Caesar. All rights reserved.
//

import UIKit

/// 微博模型
class Status: NSObject {
    
    /// 微博创建时间
    var created_at: String?
    /// 微博ID
    var id: Int = 0
    /// 微博信息内容
    var text: String?
    /// 微博来源
    var source: String?
    /// 配图数组
    var pic_urls: [[String: AnyObject]]?
     /// 用户
    var user: User?
    
    
    // 加载微博数据, 返回微博数据的数组
    class func loadStatus(finished:(dataList: [Status]?, error:NSError?) -> ()) {
    
        NetWorkTools.sharedTools.loadStatus{(result, error) -> () in
            
            if error != nil {
                finished(dataList: nil, error: error)
                return
            }
            
            // 判断是否能获得字典数组
            if let array = result? ["statuses"] as? [[String: AnyObject]] {
                var list = [Status]()
                
                // 循环便利数组
                for dict in array {
                    list.append(Status(dict: dict))
                }
                
                //获得完整的微博数组, 可以回调
                finished(dataList: list, error:nil)
            } else {
                finished(dataList: nil, error:nil)
            }
        }
    }
   
    // MARK: - 构造函数
    init(dict:[String: AnyObject]) {
        super.init()
        
        // 会调用 setValue forKey 给每一个属性赋值
        setValuesForKeysWithDictionary(dict)
    }

    override func setValue(value: AnyObject?, forKey key: String) {
        
        // 判断key 是否存在user, 如果存在就单独处理
        if key == "user" {
            // 判断 value 是否是一个有效的字典
            if let dict = value as? [String: AnyObject]{
                user = User(dict: dict)
            }
            return
        }
       super.setValue(value, forKey: key)
    }
    
    override func setValue(value: AnyObject?, forUndefinedKey key: String) { }
    
    override var description: String {
        
        let keys = ["created_at", "id", "text", "source", "pic_urls"]
        
        return "\(dictionaryWithValuesForKeys(keys))"
    }

}


